﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Mozlite.Components
{
    /// <summary>
    /// 后台服务基类。
    /// </summary>
    public abstract class TaskBase
    {
        /// <summary>
        /// 获取后台服务名称。
        /// </summary>
        public virtual string TaskName
        {
            get
            {
                return this.GetType().Name;
            }
        }
        /// <summary>
        /// 执行间隔（秒）。
        /// </summary>
        public abstract int Delay { get; }
        /// <summary>
        /// 执行方法。
        /// </summary>
        public abstract void Execute();
        /// <summary>
        /// 最后执行时间。
        /// </summary>
        public DateTime LastExecuteTime { get; set; }
        /// <summary>
        /// 判断是否可以执行当前服务。
        /// </summary>
        /// <returns>返回判断结果。</returns>
        public virtual bool CanExecute()
        {
            return DateTime.Now.AddSeconds(Delay) < LastExecuteTime || LastExecuteTime == DateTime.MinValue;
        }
    }
}
